package com.luoc.spring;

/**
 * @author luoc
 * @version 1.0
 * @date 2021/1/25 11:13
 * @since 1.0
 * try 包括代码过长，会不会影响性能，执行的速度?
 *  try catch与未使用try catch代码区别在于，前者阻止Java对try块的代码的一些优化，
 *  例如重排序。try catch里面的代码是不会被编译器优化重排的。对于上面两个函数而言，
 *  只是异常表中try起点和终点位置不一样。至于刚刚说到的指令重排的问题，
 *  由于for循环条件部分符合happens- before原则，因此两者的for循环都不会发生重排。
 *  当然只是针对这里而言，在实际编程中，还是提倡try代码块的范围尽量小，
 *  这样才可以充分发挥Java对代码的优化能力。
 */
public class TryTest {


    public static void main(String[] args) {
        tryFor();
        forTry();
    }

    public static void tryFor() {
        int j = 3;
        try {
            for (int i = 0; i < 1000; i++) {
                Math.sin(j);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void forTry() {
        int j = 3;
        for (int i = 0; i < 1000; i++) {
            try {
                Math.sin(j);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}
